﻿using Loki.Engine;
using Luna.Data.Accounting;
using Luna.Data.Configuration;
using Luna.Data.Directory;
using Luna.Data.Project;
using Luna.Data.Security;

namespace Luna.Data
{
    public class LunaDataModel : ServiceModel
    {
        /// <summary>
        /// Gets or sets the security data provider.
        /// </summary>
        /// <value>
        /// The security data provider.
        /// </value>
        public ISecurityDataProvider Security
        {
            get { return GetService<ISecurityDataProvider>(); }
            set { RegisterService<ISecurityDataProvider>(value); }
        }

        /// <summary>
        /// Gets or sets the install data provider.
        /// </summary>
        public IInstallDataProvider Install
        {
            get { return GetService<IInstallDataProvider>(); }
            set { RegisterService<IInstallDataProvider>(value); }
        }

        /// <summary>
        /// Gets or sets the accounting data provider.
        /// </summary>
        public IAccountingDataProvider Accounting
        {
            get { return GetService<IAccountingDataProvider>(); }
            set { RegisterService<IAccountingDataProvider>(value); }
        }

        /// <summary>
        /// Gets or sets the project data provider.
        /// </summary>
        public IProjectDataProvider Project
        {
            get { return GetService<IProjectDataProvider>(); }
            set { RegisterService<IProjectDataProvider>(value); }
        }

        /// <summary>
        /// Gets or sets the directory data provider.
        /// </summary>
        public IDirectoryDataProvider Directory
        {
            get { return GetService<IDirectoryDataProvider>(); }
            set { RegisterService<IDirectoryDataProvider>(value); }
        }
    }
}
